#!/usr/bin/python
# -*-coding:UTF-8 -*-

# ========================
# @Time  : 2021/3/2
# @Author: Sunny
# ========================

#可以解决资源竞争问题
import threading
from queue import Queue

q = Queue()
q.put(100)

def work1():
    for i in range(500000):
        #当work1里面的列队get获取到数据，那么work2里面的q.get会因获取不到数据而等待，所有线程还是会切换回来
        # 只有当work1里面的列队获取到数据，进行处理完成再把数据增加进列队，work2才有可能获取到数据
        #而运行，这样就解决了资源竞争问题
        n = q.get()
        n+=1
        q.put(n)



def work2():
    for i in range(500000):
        n = q.get()
        n+=1
        q.put(n)



t1 = threading.Thread(target=work1)
t2 = threading.Thread(target=work2)

t1.start()
t2.start()
t1.join() #默认等待子线程1执行结束
t2.join()

#线程之间的切换执行，会导致数据计算的差异
print('n:',q.get())